package cn.duhengkui.national.valuelist.context;

import java.util.HashMap;
import java.util.Map;

import cn.duhengkui.national.valuelist.core.data.util.Entitys;
import cn.duhengkui.national.valuelist.core.entity.BaseEntity;

/**   
 * <table border="1">
 *	<tr><td>包名称：</td><td>cn.duhengkui.national.valuelist.context</td></tr>
 *	<tr><td>类名称：</td><td>EntityContext</td></tr>
 *	<tr><td>类描述：</td><td>实体对象上下文，用于系统启动时加载所有数据库实体对象，并存放在内存中。</td></tr>
 *	<tr><td>创建人：</td><td>杜恒奎</td></tr>
 *  <tr><td>创建时间：</td><td>2018年6月7日/下午2:58:59</td></tr> 
 *  <tr><td>版本：</td><td>1.0.0</td></tr>
 * </table>   
 *     
 */
public class EntityContext {

	/**
	 * 用于存放实体对象的hashMap
	 */
	public static final Map<Class<? extends BaseEntity>, Entitys> entityMap = new HashMap<Class<? extends BaseEntity>, Entitys>();

	/**
	 * @return the entitymap
	 */
	public static Map<Class<? extends BaseEntity>, Entitys> getEntityMap() {
		return entityMap;
	}
	
	/**
	 * 向系统中增加一个实体对象
	 * @param clazz 实体对象Class
	 * @param entitys 实体对象属性
	 */
	public static void addEntity(Class<? extends BaseEntity> clazz, Entitys entitys) {
		entityMap.put(clazz, entitys);
	}
	
	/**
	 * 从内存中得到一个加载过的实体对象
	 * @param clazz 实体对象Class
	 * @return
	 */
	public static Entitys getEntity(Class<? extends BaseEntity> clazz) {
		return entityMap.get(clazz);
	}
	
	/**
	 * 判断一个实体对象是否被加载
	 * @param clazz 实体对象Class
	 * @return
	 */
	public static boolean exists(Class<? extends BaseEntity> clazz) {
		return entityMap.containsKey(clazz);
	}
	
	/**
	 * 清空内存中所有的实体对象
	 */
	public static void clean() {
		entityMap.clear();
	}
	
}